package dbdao;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.lanou.horo.myapplication.dbdao.DaoSession;
import com.lanou.horo.myapplication.dbdao.RecommendDbEntity;
import com.lanou.horo.myapplication.dbdao.RecommendDbEntityDao;

import java.util.List;

import application.BasisApplication;
import de.greenrobot.dao.query.DeleteQuery;
import de.greenrobot.dao.query.QueryBuilder;

/**
 * 关注页面的表
 * Created by dllo on 15/11/28.
 */
public class RecommendDBHelper {
    private static RecommendDBHelper helper;
    private static DaoSession daoSession;

    private RecommendDBHelper() {

    }

    public static RecommendDBHelper getInstance() {
        if (helper == null) {
            helper = new RecommendDBHelper();
            daoSession = BasisApplication.getDaoSession();//初始化
        }
        return helper;
    }

    /**
     * 提供一个返回cursor对象的方法在provide中调用
     */
    public Cursor queryAllfouse() {
        //获得查询器
        //	QueryBuilder<Themes> aBuilder = daoSession.getThemesDao().queryBuilder();
        SQLiteDatabase database =daoSession.getRecommendDbEntityDao().getDatabase();//获得数据库对象

        String fouseTabName = daoSession.getRecommendDbEntityDao().getTablename();//获得表名

        //按照原生的cursor
        Cursor cursor =	database.query(fouseTabName, null, null, null, null, null, null);//获取数据库表中的所有数据

        return cursor;
        // TODO Auto-generated method stub

    }
    /**
     * 将vaules所对应的值插入到数据库中 并返回插入之后的id值
     * @param values
     * @return
     */
    public  long insertProvider(ContentValues values){

        SQLiteDatabase database =daoSession.getRecommendDbEntityDao().getDatabase();//获得数据库对象

        String fouseTabName = daoSession.getRecommendDbEntityDao().getTablename();//获得表名


        return  database.insert(fouseTabName, null, values);


    }

    /**
     * 往数据库中添加集合对象
     *
     * @param themes
     */
    public void saveRecommend(List<RecommendDbEntity> re) {
        // TODO Auto-generated method stub
        daoSession.getRecommendDbEntityDao().insertInTx(re);//先获得表的DAO
        //daoSession数据库对象 管理都有表 所以用daoSession中get
    }

    public void addToRecommend( RecommendDbEntity item ) {
        daoSession.getRecommendDbEntityDao().insert(item);

    }
    /**
     * 更新方法
     * @param t
     */
    public void updataRecommend(RecommendDbEntity t) {
        // TODO Auto-generated method stub

        daoSession.getRecommendDbEntityDao().update(t);
    }

    /**
     * 查询数据库中RecommendDbEntity表中的所有数据
     * @return
     */
    public List<RecommendDbEntity> queryAll() {
        return daoSession.getRecommendDbEntityDao().loadAll();//loadAll()返回所有数据
        //daoSession.getThemesDao() 相找到了ThemesDao()
    }
    /**
     * 按照id查询
     * @param id
     * @return
     */
    public List<RecommendDbEntity> querById(Integer id) {
        QueryBuilder<RecommendDbEntity> db = daoSession.getRecommendDbEntityDao().
                queryBuilder();//获得表的
        db.where(RecommendDbEntityDao.Properties.Id.eq(id));//Properties对应表的属性  id等于传过来的id值

        return db.list();

    }

    /**
     * 查询是否保存
     * @param id
     * @return
     */
    public boolean isRecommend(int id) {
        QueryBuilder<RecommendDbEntity> qb = daoSession.getRecommendDbEntityDao().queryBuilder();
        qb.where(RecommendDbEntityDao.Properties.Id.eq(id));
        qb.buildCount().count();
        return qb.buildCount().count() > 0 ? true : false;
        // TODO Auto-generated method stub


    }
    /**
     * 删除
     * @param id
     */
    public void deleRecommendById(long id) {
        QueryBuilder<RecommendDbEntity>qb = daoSession.getRecommendDbEntityDao().queryBuilder();
        DeleteQuery<RecommendDbEntity> db = qb.where(RecommendDbEntityDao.Properties.Id.eq(id)).buildDelete();
        db.executeDeleteWithoutDetachingEntities();

    }
    /**
     * 删除所有
     * @return
     */
    public void clearRecommend() {
        daoSession.getRecommendDbEntityDao().deleteAll();

    }

}
